Skip to content

Add analysis mode for Seninel-1 SLC#86

Merged
konstntokas merged 8 commits into
mainfrom
konstntokas/add_slc_analysis_mode
Jul 20, 2026
Merged

Add analysis mode for Seninel-1 SLC#86
konstntokas merged 8 commits into
mainfrom
konstntokas/add_slc_analysis_mode

Conversation

@konstntokas

@konstntokas konstntokas commented Jul 16, 2026

Copy link
Copy Markdown
Collaborator

closes #67

@codecov

codecov Bot commented Jul 16, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

Files with missing lines Coverage Δ
xarray_eopf/amodes/sentinel1.py 100.00% <100.00%> (ø)
xarray_eopf/backend.py 100.00% <ø> (ø)
xarray_eopf/version.py 100.00% <100.00%> (ø)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@TonioF TonioF left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See my comments. To be honest, I find this pr so massive that I could only examine that it looks good, but I could not really verify what it does.
I also tried to run the notebook, I ended up with RasterioIOError: HTTP response code: 403 .

Comment thread docs/guide.md Outdated
> currently experimental and undergoing validation.
> currently experimental and undergoing validation. Some conversion parameters
> are missing in the new EOPF product, which are currently estimated. Newer EOPF
> product verison will include these parameters.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
> product verison will include these parameters.
> product version will include these parameters.

Comment thread docs/guide.md Outdated
(`azimuth_time`, `slant_range_time`) and organized in bursts and swaths. To transform
this data into an **analysis-ready dataset**, the following processing steps are applied:

1. **Radiometric Calibration:** For each burst complex SLC measurements for are

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
1. **Radiometric Calibration:** For each burst complex SLC measurements for are
1. **Radiometric Calibration:** For each burst complex SLC measurements are

Comment thread docs/guide.md Outdated
If not specified, [EPSG:4326](https://epsg.io/4326) is used.
- `resolution`: Target resolution for all spatial variables expressed in the units
of the specified `crs`. If not specified, the resolution is derived (in degrees)
from the CopDEM (30 m).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is that the same DEM as described in the next parameter?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes, I added this information.

Comment on lines +54 to +58
url = (
"https://data.eodc.eu/collections/EOPF_ZARR/products/cpm_v270/"
"S01SIWSLC/2026/05/31/S1D_IW_SLC__1SDV_20260531T171503_"
"20260531T171530_003031_00539E_C573.zarr"
)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's unfortunate to have a url to an external resource in a test. If it is no option to host this (or a subset) on GitHub, add an annotation to the test to label it as a web test that can be switched off if required, e.g.,
@skipIf(os.environ.get('XARRAY_EOPF_DISABLE_WEB_TESTS', '1') == '1',
'XARRAY_EOPF_DISABLE_WEB_TESTS = 1')

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unit tests are located in tests/ and run on every push as well as when running pytest. Integration tests access real data through the EOPF Sample Service infrastructure. They are located in integration/ and run only when executing `pytest integration/ or via a daily GitHub Actions cron job.

Comment thread xarray_eopf/amodes/sentinel1.py Outdated
if grd is None:
grd = datatree[group].measurements.to_dataset()
grd = grd.rename({"grd": mode.lower()})
assert len(children) == 1

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is it important there is exactly one child?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For each polarization mode there should be only one child, otherwise the product is invalid. I will logging to it, otherwise user will not understand.

@konstntokas

Copy link
Copy Markdown
Collaborator Author

See my comments. To be honest, I find this pr so massive that I could only examine that it looks good, but I could not really verify what it does. I also tried to run the notebook, I ended up with RasterioIOError: HTTP response code: 403 .

Probably you have not put in CDSE credentials which is needed to retrieve the COP DEM 30m from CDSE STAC API. I will give them to you for testing.

Otherwise, I have corrected some typos and small things which I noticed on the way.

@konstntokas
konstntokas requested a review from TonioF July 20, 2026 09:50

@TonioF TonioF left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, the notebook made it a lot clearer to understand the implementation. I approve now.

@konstntokas
konstntokas merged commit fbfb1c9 into main Jul 20, 2026
2 checks passed
@konstntokas
konstntokas deleted the konstntokas/add_slc_analysis_mode branch July 20, 2026 15:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Implement analysis mode for Sentinel-1

2 participants